package a_File1;

import org.junit.Test;

import java.io.File;
import java.io.IOException;

/*
    File 方法的使用
 */
public class FileAPIDemo03 {

    @Test
    public void test01(){
        File file = new File("a.txt");
        //判断本地磁盘中是否存在a.txt文件
        boolean exists = file.exists();
        System.out.println(exists);
    }

    @Test
    public void test02() throws IOException {
        //创建文件对象
        File file = new File("aa.txt");
        //创建本地文件
        boolean newFile = file.createNewFile();


        File a = new File("a/b");
        //创建单层文件夹(目录路径)
        boolean mkdir = a.mkdir();

        File b = new File("b/a/c");
        //boolean mkdir1 = b.mkdir();
        //创建多层文件夹
        boolean mkdirs = b.mkdirs();
        System.out.println(mkdirs);

        //删除空的文件夹
        File delete_a = new File("a");
        boolean delete = delete_a.delete();
        System.out.println(delete);

    }

    @Test//目录的遍历方式
    public void test03(){
        File file = new File("b");
        String[] list = file.list();
        for ( String s : list) {
            System.out.println(s);
        }

        System.out.println("------------------");

        File[] files = file.listFiles();
        for ( File s : files) {
            System.out.println(s);
        }

        System.out.println("------------------");

        /*
        file.listFiles(new FileFilter() {
            @Override //过滤的方法
            public boolean accept(File pathname) {
                return false;
            }
        });
        */

    }

    @Test//删除非空文件夹 - 使用递归
    public void test04(){
        /*结束条件:
            1.删除文件
            2.空文件夹可以删除
         */
        File file = new File("a");
        deleteFile(file);

    }

    //删除非空文件夹的方法
    public void deleteFile(File file){
        //获取file中的所有目录/文件
        File[] files = file.listFiles();

        if(files != null){
            for (File f : files) {
                //f有可能是文件/可能是文件夹(是不是非空)
                deleteFile(f);
            }
        }
        file.delete();
    }


}
